iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
自我挑戰組

python-資料分析與機器學習系列 第 12

DAY12-讀取新北市電影院名冊(json)

  • 分享至 

  • xImage
  •  

前言

今天來學習如何讀取網路上以及下載到電腦的json檔。


json是一種輕量的數據交換格式,簡化了資料表示方式,以左右大括弧作為欄位:{" a " : " b "}

網際網路讀取
網址:https://data.ntpc.gov.tw/api/datasets/61C99F42-8A90-4ADC-9C40-BA9E0EA097AA/json?page=0&size=1000

import requests
import json

# 讀取JSON數據的URL
json_url = "https://data.ntpc.gov.tw/api/datasets/61C99F42-8A90-4ADC-9C40-BA9E0EA097AA/json?page=0&size=1000"

try:
    # 使用requests取得JSON數據
    response = requests.get(json_url)

    # 檢查響應的狀態碼
    if response.status_code == 200:
        # 使用json.loads函數讀取JSON數據
        json_data = json.loads(response.text)

        modified_json_data = []
        for item in json_data:
        #將原資料由英文改為中文
            modified_item = {
                "名稱": item["name"],
                "地址": item["address"],
                "電話": item["tel"],
                "廳數": item["number"]
            }
            modified_json_data.append(modified_item)
            
        print(modified_json_data)
    else:
        print("無法獲取JSON數據,狀態碼:", response.status_code)

except requests.exceptions.RequestException as e:
    print("發生錯誤:", e)
    
[{'名稱': '天台戲院股份有限公司', '地址': '新北市三重區重新路2段78號4樓', '電話': '2978-7700', '廳數': '5'}, {'名稱': '鴻金寶麻吉戲院(萬念福開發事業股份有限公司)', '地址': '新北市新莊區民安路188巷5號4樓', '電話': '2207-0222', '廳數': '5'}, {'名稱': '威秀影城股份有限公司中和環球分公司', '地址': '新北市中和區中山路3段122號4樓', '電話': '8226-6063', '廳數': '10'}, {'名稱': '威秀影城股份有限公司板橋分公司', '地址': '新北市板橋區新站路28號10樓', '電話': '7738-6608', '廳數': '9'}, {'名稱': '板橋秀泰影城股份有限公司', '地址': '新北市板橋區縣民大道二段3號2~4樓', '電話': '2968-5588', '廳數': '17'}, {'名稱': '國賓影城股份有限公司林口分公司', '地址': '新北市林口區文化三路一段402巷2號4樓', '電話': '2608-0011', '廳數': '8'}, {'名稱': '國賓影城股份有限公司新莊分公司', '地址': '新北市新莊區五工路66號3、4樓(晶冠廣場)', '電話': '8521-6517', '廳數': '13'}, {'名稱': '威秀影城股份有限公司新北林口分公司', '地址': '新北市林口區文化三路一段356號3樓、4樓', '電話': '2606-8099', '廳數': '9'}, {'名稱': '樹林秀泰影城股份有限公司', '地址': '新北市樹林區樹新路40之6號', '電話': '2686-8769', '廳數': '12'}, {'名稱': '土城秀泰影城股份有限公司', '地址': '新北市土城區學府路2段210號1樓', '電話': '2260-3398', '廳數': '11'}, {'名稱': '美麗新娛樂股份有限公司淡海分公司', '地址': '新北市淡水區義山路2段303號2~4樓', '電話': '7705-0899', '廳數': '9'}, {'名稱': '喜樂時代影城股份有限公司永和分公司', '地址': '新北市永和區中山路1段238號4樓', '電話': '8231-6685', '廳數': '13'}, {'名稱': '國賓影城股份有限公司淡水分公司', '地址': '新北市淡水區中正路一段2號1樓(禮萊廣場)', '電話': '2626-0707', '廳數': '8'}, {'名稱': '美麗新娛樂股份有限公司新莊分公司', '地址': '新北市新莊區新北大道4段3號8~12樓', '電話': '7717-9788', '廳數': '12'}, {'名稱': '林園電影城戲院(暫時歇業中)', '地址': '新北市板橋區府中路175號3樓', '電話': '2960-5333', '廳數': '3'}, {'名稱': '華麗電影院(暫時歇業中)', '地址': '新北市板橋區府中路175號5樓', '電話': '2960-5333', '廳數': '2'}]

檔案讀取

import json

# 指定要讀取的JSON檔案的路徑
json_file_path = "data.json"  

try:
    # 開啟JSON檔案並解析數據
    with open(json_file_path, "r") as json_file:
        data = json.load(json_file)
    
    modified_json_data = []
        for item in data:
        #將原資料由英文改為中文
            modified_item = {
                "名稱": item["name"],
                "地址": item["address"],
                "電話": item["tel"],
                "廳數": item["number"]
            }
            modified_json_data.append(modified_item)
            
    print(modified_json_data)        
        
except FileNotFoundError:
    print(f"檔案未找到: {json_file_path}")

except json.JSONDecodeError as e:
    print(f"JSON解析錯誤: {e}")

except Exception as e:
    print(f"發生錯誤: {e}")

今天學完讀取json檔案的方式,明天再來學習如何讀取其他格式檔案吧!

---20230927---


上一篇
DAY11-讀取各鄉鎮市區人口密度(csv)
下一篇
DAY13-新北市危險水域(xml)
系列文
python-資料分析與機器學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言